package org.extframework.ld.bean;

import java.util.Date;

import org.extframework.ld.bean.model.DomainModel;
import org.extframework.ld.bean.model.EntityInterceptor;
import org.extframework.ld.bean.model.IUser;
import org.extframework.ld.bean.model.UpdateInfo;

/**
 * @author : Dong.Li
 * @created : 2013-1-17
 * @version : 1.0
 * @description :
 */
public abstract class Entity extends DomainModel implements EntityInterceptor {

	

	private static final long serialVersionUID = 1L;
	private Long id;
	private UpdateInfo updateInfo = new UpdateInfo();

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public boolean isNew() {
		return (this.id == null);
	}

	public UpdateInfo getUpdateInfo() {
		return this.updateInfo;
	}

	public void updateInfo(IUser user) {
		if (isNew()) {
			this.updateInfo = new UpdateInfo(user);
		} else if (this.updateInfo != null) {
			this.updateInfo.setUpdateInfo(user);
		} else
			this.updateInfo = new UpdateInfo(user);
	}
	
	public void updateInfo() {
		if (isNew()) {
			this.updateInfo = new UpdateInfo();
		} else if (this.updateInfo != null) {
			this.updateInfo.setUpdateTime(new Date());
		} else
			this.updateInfo = new UpdateInfo();
	}
	
	public void setUpdateInfo(UpdateInfo updateInfo) {
		this.updateInfo = updateInfo;
	}

}
